home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 80 / XENIATGM80.iso / Goodies / Blood 2 / Source / data.z / GibFX.h < prev    next >
C/C++ Source or Header  |  1999-04-02  |  3KB  |  152 lines

  1.  
  2.  // ----------------------------------------------------------------------- //
  3. //
  4. // MODULE  : GibFX.h
  5. //
  6. // PURPOSE : Gib special fx class - Definition
  7. //
  8. // CREATED : 8/3/98
  9. //
  10. // ----------------------------------------------------------------------- //
  11.  
  12. #ifndef __GIBSFX_H__
  13. #define __GIBSFX_H__
  14.  
  15. #include "SpecialFX.h"
  16. #include "client_physics.h"
  17. #include "SharedDefs.h"
  18.  
  19.  
  20. #define TYPE_FLESH            0x00000001
  21. #define TYPE_STONE            0x00000002
  22. #define TYPE_WOOD            0x00000004
  23. #define TYPE_METAL            0x00000008
  24. #define TYPE_GLASS            0x00000010
  25.  
  26. #define TYPE_MASK            0x000000ff
  27.  
  28. #define SIZE_LARGE            0x00000100
  29. #define SIZE_SMALL            0x00000200
  30. #define SIZE_MASK            0x00000f00
  31.  
  32. #define TRAIL_BLOOD            0x00001000
  33. #define TRAIL_SMOKE            0x00002000
  34. #define TYPEFLAG_CUSTOM        0x00004000
  35.  
  36.  
  37. struct GIBCREATESTRUCT : public SFXCREATESTRUCT
  38. {
  39.     GIBCREATESTRUCT::GIBCREATESTRUCT();
  40.  
  41.     DVector        m_Pos;
  42.     DVector        m_Dir;
  43.     DVector        m_Dims;
  44.     HSTRING        m_hstrModel;
  45.     HSTRING        m_hstrSkin;
  46.     HSTRING        m_hstrSound;
  47.     DDWORD        m_dwFlags;
  48.     DFLOAT        m_fScale;
  49. };
  50.  
  51. inline GIBCREATESTRUCT::GIBCREATESTRUCT()
  52. {
  53.     memset(this, 0, sizeof(GIBCREATESTRUCT));
  54. }
  55.  
  56.  
  57. class CGibFX : public CSpecialFX
  58. {
  59.     public :
  60.  
  61.         CGibFX() : CSpecialFX()
  62.         {
  63.             VEC_INIT( m_vPos );
  64.             ROT_INIT( m_Rotation );
  65.             VEC_INIT( m_vMinVel );
  66.             VEC_INIT( m_vMaxVel );
  67.             VEC_INIT( m_vDims );
  68.             m_hstrModel = DNULL;
  69.             m_hstrSkin = DNULL;
  70.             m_hstrSound = DNULL;
  71.             m_dwFlags = 0;
  72.  
  73.             m_fPitch            = 0.0f;
  74.             m_fYaw                = 0.0f;
  75.             m_fPitchVel            = 0.0f;
  76.             m_fYawVel            = 0.0f;
  77.  
  78.             m_bFade = DFALSE;
  79.  
  80.             memset(&moveObj,0,sizeof(MovingObject));
  81.  
  82.             m_fScaleCount = 0.0f;
  83.  
  84.             m_bBlood = DFALSE;
  85.             m_bSmoke = DFALSE;
  86.  
  87.             m_fStartTime    = -1.0f;
  88.             m_fOffsetTime    = 0.0f;
  89.  
  90.             m_fScale = 1.0f;
  91.  
  92.             m_nType            = SURFTYPE_UNKNOWN;
  93.         }
  94.  
  95.         ~CGibFX()
  96.         {
  97.             if( m_hstrModel && m_pClientDE )
  98.                 m_pClientDE->FreeString( m_hstrModel );
  99.  
  100.             if( m_hstrSkin && m_pClientDE )
  101.                 m_pClientDE->FreeString( m_hstrSkin );
  102.  
  103.             if( m_hstrSound && m_pClientDE )
  104.                 m_pClientDE->FreeString( m_hstrSound );
  105.         }
  106.  
  107.         virtual DBOOL Init(SFXCREATESTRUCT* psfxCreateStruct);
  108.         DBOOL          Term();
  109.         virtual DBOOL CreateObject(CClientDE* pClientDE);
  110.         virtual DBOOL Update();
  111.         DBOOL          UpdateMovement(MovingObject* pObject, ClientIntersectInfo* pInfo);
  112.  
  113.         HOBJECT    GetHandle()        {return m_hObject;}
  114.         DBOOL    CreateBloodSpurt(DVector *pvDir);
  115.         void    CreateBloodSplat(DVector *pvPos, ClientIntersectInfo *pInfo);
  116.  
  117.     private :
  118.  
  119.         DVector        m_vPos;
  120.         DRotation    m_Rotation;
  121.         DVector        m_vDir;
  122.         DVector        m_vDims;
  123.         DVector        m_vMinVel;
  124.         DVector        m_vMaxVel;
  125.         HSTRING        m_hstrModel;
  126.         HSTRING        m_hstrSkin;
  127.         HSTRING        m_hstrSound;
  128.         DDWORD        m_dwFlags;
  129.  
  130.         DBOOL        m_bFade;
  131.         int            m_nBounceCount;
  132.         DFLOAT        m_fPitch;        
  133.         DFLOAT        m_fYaw;
  134.         DFLOAT        m_fPitchVel;
  135.         DFLOAT        m_fYawVel;
  136.  
  137.         MovingObject    moveObj;
  138.         DFLOAT        m_fScaleCount;
  139.  
  140.         DBOOL        m_bBlood;
  141.         DBOOL        m_bSmoke;
  142.  
  143.         DFLOAT        m_fStartTime;
  144.         DFLOAT        m_fOffsetTime;
  145.  
  146.         DFLOAT        m_fScale;
  147.  
  148.         int            m_nType;
  149. };
  150.  
  151. #endif // __GIBSFX_H__
  152.